package com.woniuxy.controller;

import com.woniuxy.entity.DTO.algorithm.OrderRunPredictionDTO;
import com.woniuxy.service.IOrderRunPredictionService;
import com.woniuxy.util.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

/**
 * @Author 陈华庆
 * @Date 2025/7/22 20:41
 * @Description TODO
 * 跑腿订单预测控制器
 * 提供订单量预测相关的API接口
 */
/*
- 1.
数据来源 ：预测模型基于过去30天的all_run和order_run表历史数据，综合考虑了两种表的订单状态分布
- 2.
预测算法 ：采用时间序列平滑法结合增长率计算，对每种订单状态单独建模预测
- 3.
工程化考虑 ：
- 兼容现有项目结构和编码规范
- 使用与UserPrediction类似的DTO设计
- 统一的ResponseData响应格式
- 包含置信区间计算，提供预测可靠性参考
 */
@RestController
@RequestMapping("/order-prediction")
public class OrderRunPredictionController {

    @Autowired
    private IOrderRunPredictionService orderPredictionService;

    /**
     * 获取未来指定天数的订单状态分布预测
     * @param days 预测天数，默认为7天
     * @return 预测结果列表
     */
    @GetMapping("/status-distribution")
    public ResponseData<List<OrderRunPredictionDTO>> getOrderStatusPrediction(
            @RequestParam(name = "days",required = false) Integer days) {
        List<OrderRunPredictionDTO> predictions = orderPredictionService.predictOrderStatusDistribution(days);
        return ResponseData.ok(predictions);
    }
}